package org.javahispano.javacup.modelo;


/**Clase abstracta base de todos los comandos*/
public abstract class Comando {

	/**Enumeracion de los tipos de comandos disponibles*/
	public enum Tipo {
		/**Tipo ir a*/
		IR_A,
		/**Tipo golpear el balon*/
		GOLPEAR_BOLA,
	}

	/**Retorna el tipo de comando*/
	public abstract Tipo getTipo();

	/**Retorna el indice del jugador que ejecuta el comando*/
	public abstract int getIndJugador();

	@Override
	public boolean equals(Object obj) {
		if (!(obj instanceof Comando)) {
			return false;
		}
		Comando c = (Comando) obj;
		return c.getTipo() == getTipo() && c.getIndJugador() == getIndJugador();
	}

	@Override
	public int hashCode() {
		return super.hashCode();
	}

	@Override
	public String toString() {
		if (getTipo().equals(Tipo.GOLPEAR_BOLA)) {
			return "GolpeaBola(" + getIndJugador() + ")";
		} else if (getTipo().equals(Tipo.IR_A)) {
			return "IrA(" + getIndJugador() + ")";
		} else {
			return "none";
		}

	}
}

